
Invoke an operation on a partition, such as resizing the partition or transferring or migrating the partition to a different database.
| URL Parameters | |
|---|---|
| format | The format of the data in the request body. Allowed
values: json, or xml. Use this parameter to override the
Content-type header. |
| Request Headers | |
|---|---|
| Accept | The expected MIME type of the response. If the
format parameter is present, it takes precedence over the Accept header.
Supported values: application/xml, application/json.
|
The response depends on the requested operation. The synchronous transfer operation returns status code 200 (OK) upon success. The asynchronous resize and migrate operations return status code 202 (Accepted) and a response body that includes a link to the process status view for the affected resource. If the payload is malformed, a status code of 400 (Bad Request) is returned. A status code of 401 (Unauthorized) is returned if the user does not have the necessary privileges.
manage-admin role, or the following
privilege: http://marklogic.com/xdmp/privileges/manage-admin
The operation performed by the request is determined by the wrapper element name in XML or
the value of the operation key in JSON. The following operations are supported:
resize, transfer, and migrate.
For details
on the operations, see tieredstorage:partition-resize, tieredstorage:partition-migrate,
tieredstorage:partition-transfer, and
Common Forest and Partition Operations in the Administrator's Guide.
This method can be either synchronous or asynchronous, depending on the type of operation: Resize and migrate are asynchronous operations, transfer is a synchronous operation.
Asynchronous operations return
status 202 (Accepted) and the response Location header contains a reference to a ticket you
can use to check on the status and outcome of the operation using GET
/manage/v2/tickets/{tid}. Synchronous operations return status 204 (No Content).
For the transfer operation, the input data structure contains a
destination-database. For details, see the examples. Before transferring a
range partition from one database to another, you must configure the destination database to
have a matching range policy.
For the migrate operation, the request
body must be a structure similar to that for resize, but omitting
forests-per-host. You must include at least the host list. All
other fields are optional, except that JSON input must include operation.
For the resize operation, the request body must have the following
structure. You must include the host list and forests-per-host.
All other fields are optional, except that JSON input must include operation.
operationforests-per-hosthostsThis is a complex structure with the following children:
hostdata-directorylarge-data-directoryfast-data-directoryoptionsThis is a complex structure with the following children:
option
$ cat partition-resize.xml
==>
<resize xmlns="http://marklogic.com/manage">
<forests-per-host>2</forests-per-host>
<hosts>
<host>host-1</host>
<host>host-2</host>
</hosts>
</resize>
The equivalent JSON configuration:
$ cat partition-resize.json
==>
{
"operation": "resize",
"forests-per-host": 2,
"host": [ "host-1", "host-2" ]
}
$ curl --anyauth --user user:password -X PUT -d @./partition-resize.xml \
-i -H "Content-type: application/xml" \
http://localhost:8002/manage/v2/databases/example-db/partitions/2011
==> The range partition named "2011" is resized such that it has 2 forests on
each host. New forests are created as needed. Since the operation
is asynchronous, MarkLogic Server responds with ticket information
similar to the following:
HTTP/1.1 202 Accepted
Content-type: application/xml
Cache-Control: no-cache
Expires: -1
Location: /manage/v2/tickets/14991169073676404304?view=process-status
Server: MarkLogic
Content-Length: 246
Connection: Keep-Alive
Keep-Alive: timeout=5
<resize xmlns="http://marklogic.com/manage">
<link>
<kindref>process-status</kindref>
<uriref>/manage/v2/tickets/14991169073676404304?view=process-status</uriref>
</link>
<message>Monitor operation progress by viewing ticket</message>
</resize>
$ cat partition-transfer.xml
==>
<transfer xmlns="http://marklogic.com/manage">
<destination-database>destination-db</destination-database>
</transfer>
$ cat partition-transfer.json
==>
{
"operation": "transfer",
"destination-database": "destination-db"
}
$ curl --anyauth --user user:password -X PUT -d @./partition-transfer.xml \
-i -H "Content-type: application/xml" \
http://localhost:8002/manage/v2/databases/source-db/partitions/2011
==> The partition named "2011" is transferred from source-db to
destination-db. New forests are created in destination-db. The
forests in the partition in destination-db are detached from the
database. This is a synchronous operation. MarkLogic Server responds
with headers similar to the following:
HTTP/1.1 204 No Content
Server: MarkLogic
Content-Length: 0
Connection: Keep-Alive
Keep-Alive: timeout=5
$ cat partition-migrate.xml
==>
<migrate xmlns="http://marklogic.com/manage">
<hosts>
<host>dest-host-1</host>
<host>dest-host-2</host>
</hosts>
</migrate>
The equivalent JSON configuration:
$ cat partition-migrate.json
==>
{
"operation": "migrate",
"host": [ "dest-host-1", "dest-host-2" ]
}
$ curl --anyauth --user user:password -X PUT -d @./partition-migrate.xml \
-i -H "Content-type: application/xml" \
http://localhost:8002/manage/v2/databases/example-db/partitions/2011
==> The range partition named "2011" is migrated to the hosts dest-host-1
and dest-host-2. This is an asynchronous operation. MarkLogic Server
Server responds with ticket information similar to the following:
HTTP/1.1 202 Accepted
Content-type: application/xml
Cache-Control: no-cache
Expires: -1
Location: /manage/v2/tickets/14991169073676404304?view=process-status
Server: MarkLogic
Content-Length: 246
Connection: Keep-Alive
Keep-Alive: timeout=5
<migrate xmlns="http://marklogic.com/manage">
<link>
<kindref>process-status</kindref>
<uriref>/manage/v2/tickets/14991169073676404304?view=process-status</uriref>
</link>
<message>Monitor operation progress by viewing ticket</message>
</migrate>